/**
 * @description 根据 object对象的path路径获取值。如果解析 value 是 undefined 会以 defaultValue 取代
 * @param {Object} object 要检索的对象
 * @param {Array|string} path 要获取属性的路径
 * @param {*} defaultValue 如果解析值是 undefined ，这值会被返回
 * @returns {*} 返回解析的值
 * @example
 * var object = { 'a': [{ 'b': { 'c': 3 } }] };
 * get(object, 'a[0].b.c');
 * => 3
 * get(object, ['a', '0', 'b', 'c']);
 * => 3
 * get(object, 'a.b.c', 'default');
 * => 'default'
*/
function get(object, path, defaultValue) {
    let obj = object;
    if (typeof path === 'string') {
        const reg = /[^\[\].]+/g;
        path = path.match(reg);
    }
    for (const key of path) {
        if (!obj) {
            return;
        }
        obj = obj[key]
    }
    return obj === undefined ? defaultValue : obj;
}
